home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Online / opennap / server_usage.c < prev    next >
C/C++ Source or Header  |  2001-06-08  |  2KB  |  87 lines

  1. /* Copyright (C) 2000 edwards@bitchx.dimension6.com
  2.    This is free software distributed under the terms of the
  3.    GNU Public License.  See the file COPYING for details.
  4.  
  5.    Modified by drscholl@users.sourceforge.net 2/25/2000.
  6.  
  7.    $Id: server_usage.c,v 1.24 2001/02/13 08:41:15 drscholl Exp $ */
  8.  
  9. #include <time.h>
  10. #include <string.h>
  11. #include <stdlib.h>
  12. #include "opennap.h"
  13. #include "hashlist.h"
  14. #include "debug.h"
  15.  
  16. /* 10115 [ :<user> ] [ <server> ] */
  17. HANDLER (server_usage)
  18. {
  19.     USER   *user;
  20.     int     numServers, delta;
  21.     unsigned int mem_used;
  22.  
  23.     (void) tag;
  24.     (void) len;
  25.     ASSERT (validate_connection (con));
  26.     CHECK_USER_CLASS ("server_usage");
  27.     if (pop_user (con, &pkt, &user) != 0)
  28.     return;
  29.  
  30.     delta = global.current_time - global.last_click;
  31.     if (delta == 0)
  32.     delta = 1;
  33.     if (!*pkt || !strcasecmp (pkt, Server_Name))
  34.     {
  35.     mem_used = MEMORY_USED;
  36.  
  37.     numServers = list_count (Servers);
  38.     send_user (user, MSG_SERVER_USAGE_STATS,
  39.            "%d %d %d %u %.0f %d %u %u %u %d %d %d %d %.0f %.0f %u",
  40.            global.clients_num - numServers,
  41.            numServers,
  42.            Users->dbsize,
  43.            Num_Files,
  44.            Num_Gigs * 1024,
  45.            Channels->dbsize,
  46.            Server_Start,
  47.            time (0) - Server_Start,
  48.            mem_used,
  49.            User_Db->dbsize,
  50.            (int) (global.bytes_in / delta / 1024),
  51.            (int) (global.bytes_out / delta / 1024),
  52.            global.search_count / delta,
  53.            global.total_bytes_in, global.total_bytes_out,
  54.            Pending_Searches);
  55.     }
  56.     else
  57.     pass_message_args (con, tag, ":%s %s", user->nick, pkt);
  58. }
  59.  
  60. static void
  61. client_version_cb (hashlist_t * v, CONNECTION * con)
  62. {
  63.     ASSERT (validate_connection (con));
  64.     send_cmd (con, MSG_CLIENT_VERSION_STATS, "\"%s\" %d", v->key, v->count);
  65. }
  66.  
  67. /* 10118
  68.  * print client version stats
  69.  */
  70. HANDLER (client_version_stats)
  71. {
  72.     (void) pkt;
  73.     (void) len;
  74.     ASSERT (validate_connection (con));
  75.     CHECK_USER_CLASS ("client_version_stats");
  76.     /* because this potentially generates a lot of output, it is restricted
  77.      * to mod+ to avoid abuse.
  78.      */
  79.     if (con->user->level < LEVEL_MODERATOR)
  80.     {
  81.     permission_denied (con);
  82.     return;
  83.     }
  84.     hash_foreach (Client_Versions, (hash_callback_t) client_version_cb, con);
  85.     send_cmd (con, tag, "");    /* terminate the list */
  86. }
  87.